package com.learning.datastruct.heap;

/**
 * @author ZLH
 */
public interface MyHeap<E> {
    /**
     * 返回堆的元素数量
     * @return 返回堆的元素数量
     */
    int size();

    /**
     * 堆是否为空
     * @return 堆是否为空
     */
    boolean isEmpty();

    /**
     * 清空堆
     */
    void clear();

    /**
     * 获取堆顶元素
     * @return 堆顶元素
     */
    E get();

    /**
     * 移除堆顶元素并返回
     * @return 堆顶元素
     */
    E remove();

    /**
     * 向堆中添加元素
     * @param e 要添加的元素
     */
    void add(E e);

    /**
     * 移除堆顶元素并添加一个元素
     * @param e 要添加的元素
     * @return 原有的堆顶元素
     */
    E replace(E e);
}
